package edu.pe.cayetano.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import org.apache.commons.beanutils.DynaBean;

import edu.pe.cayetano.framework.DAOException;
import edu.pe.cayetano.model.to.HorarioAtencionTO;
import edu.pe.cayetano.util.Utilitario;

public class HorarioAtencionDAO  extends BaseDAO{

	public HorarioAtencionDAO(Connection cnx) {
		super(cnx);
	}
	
	/**
	 * Metodo que retorna el listado de horarios de atencion
	 * */
	public ArrayList<HorarioAtencionTO> getHorarios(String tipoListado) throws Exception{

		HorarioAtencionTO					horarioAtencionTO	= null;
		ArrayList<HorarioAtencionTO> 		lista		 		= new ArrayList<HorarioAtencionTO>();
		PreparedStatement   				pstmt 		 		= null;
		ResultSet 							rs 			 		= null;
	
		try{
				StringBuffer query  = new StringBuffer();
				query.append(" SELECT COD_HORARIO,HORA"); 
				query.append(" FROM "+schema+"HORARIO_ATENCION");
				pstmt = getConnection().prepareStatement(query.toString());
				rs=pstmt.executeQuery();
				if(tipoListado.equalsIgnoreCase("CZ")){
					horarioAtencionTO=new HorarioAtencionTO();
					horarioAtencionTO.setCodigo(0);
					horarioAtencionTO.setNombre("");
					lista.add(horarioAtencionTO);
				}
				while(rs.next()){
					horarioAtencionTO=new HorarioAtencionTO();
					horarioAtencionTO.setCodigo(rs.getInt(1));
					horarioAtencionTO.setNombre(rs.getString(2).substring(0,5));
					lista.add(horarioAtencionTO);
				}
			}catch(Exception e){
				throw new DAOException(e.getMessage());
			}finally{
				try{
					try{pstmt.close();}catch(Exception e){}
					try{rs.close();}catch(Exception e){}
				}catch(Exception e1){}
			}
		return lista;
	}

	/**
	 * Metodo que retorna el listado de horarios de atencion disponibles por especialidad, sillon dental y fecha
	 * */
	public ArrayList<HorarioAtencionTO> getHorariosDisponiblesxEspxSilxDate(DynaBean dyna) throws Exception{

		HorarioAtencionTO					horarioAtencionTO	= null;
		ArrayList<HorarioAtencionTO> 		lista		 		= new ArrayList<HorarioAtencionTO>();
		PreparedStatement   				pstmt 		 		= null;
		ResultSet 							rs 			 		= null;
	
		try{
				StringBuffer query  = new StringBuffer();
				query.append(" SELECT COD_HORARIO,HORA FROM "+schema+"HORARIO_ATENCION");
				query.append(" WHERE COD_HORARIO NOT IN"); 
				query.append(" (SELECT DISTINCT SILLON_ID FROM  "+schema+"CITA ");
				query.append(" WHERE FECHA_SOLICITADA=? AND SILLON_ID=?)");

				pstmt = getConnection().prepareStatement(query.toString());
				pstmt.setString(1,Utilitario.getPropertyDynaBean(dyna,"cboHorario"));
				pstmt.setString(2,Utilitario.getPropertyDynaBean(dyna,"cboSillon"));
				rs=pstmt.executeQuery();
				while(rs.next()){
					horarioAtencionTO=new HorarioAtencionTO();
					horarioAtencionTO.setCodigo(rs.getInt(1));
					horarioAtencionTO.setNombre(rs.getString(2).substring(0,5));
					lista.add(horarioAtencionTO);
				}
			}catch(Exception e){
				throw new DAOException(e.getMessage());
			}finally{
				try{
					try{pstmt.close();}catch(Exception e){}
					try{rs.close();}catch(Exception e){}
				}catch(Exception e1){}
			}
		return lista;
	}
	
}
